package com.tiniplanet.webgate.entity;

import static javax.persistence.GenerationType.IDENTITY;

import java.sql.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

@Entity
@Table(name = "HR_EMPLOYEE", uniqueConstraints = { @UniqueConstraint(columnNames = "EMPLOYEE_NO") })
public class Employee extends AbstractModel {

	private static final long serialVersionUID = -5552909493617001533L;

	private String id;
	private String firstName;
	private String middleName;
	private String lastName;
	private Byte gender;
	private Date birthday;
	private String marrialStatus;
	private String idCardNo;
	private String issuedDate;
	private String issuedPlace;
	private String email;
	private String state;

	/**
	 * @return the id
	 */
	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "EMPLOYEE_NO", unique = true, nullable = false, length = 10)
	/**
	 * @return the id
	 */
	public String getId() {
		return id;
	}

	/**
	 * @param id
	 *            the id to set
	 */
	public void setId(String id) {
		this.id = id;
	}

	/**
	 * @return the firstName
	 */
	@Column(name = "FIRST_NAME", nullable = false, length = 10)
	public String getFirstName() {
		return firstName;
	}

	/**
	 * @param firstName
	 *            the firstName to set
	 */
	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	/**
	 * @return the middleName
	 */
	@Column(name = "MIDDLE_NAME", nullable = true, length = 21)
	public String getMiddleName() {
		return middleName;
	}

	/**
	 * @param middleName
	 *            the middleName to set
	 */
	public void setMiddleName(String middleName) {
		this.middleName = middleName;
	}

	/**
	 * @return the lastName
	 */
	@Column(name = "LAST_NAME", nullable = false, length = 10)
	public String getLastName() {
		return lastName;
	}

	/**
	 * @param lastName
	 *            the lastName to set
	 */
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

	/**
	 * @return the gender
	 */
	@Column(name = "GENDER", nullable = true)
	public Byte getGender() {
		return gender;
	}

	/**
	 * @param gender
	 *            the gender to set
	 */
	public void setGender(Byte gender) {
		this.gender = gender;
	}

	/**
	 * @return the birthday
	 */
	@Column(name = "BIRTH_DATE", nullable = true)
	public Date getBirthday() {
		return birthday;
	}

	/**
	 * @param birthday
	 *            the birthday to set
	 */
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	/**
	 * @return the marrialStatus
	 */
	@Column(name = "MARRIAL_STATUS", nullable = true, length = 10)
	public String getMarrialStatus() {
		return marrialStatus;
	}

	/**
	 * @param marrialStatus
	 *            the marrialStatus to set
	 */
	public void setMarrialStatus(String marrialStatus) {
		this.marrialStatus = marrialStatus;
	}

	/**
	 * @return the idCardNo
	 */

	@Column(name = "ID_CARD_NO", nullable = true, length = 10)
	public String getIdCardNo() {
		return idCardNo;
	}

	/**
	 * @param idCardNo
	 *            the idCardNo to set
	 */
	public void setIdCardNo(String idCardNo) {
		this.idCardNo = idCardNo;
	}

	/**
	 * @return the issuedDate
	 */
	@Column(name = "ISSUED_DATE", nullable = true)
	public String getIssuedDate() {
		return issuedDate;
	}

	/**
	 * @param issuedDate
	 *            the issuedDate to set
	 */
	public void setIssuedDate(String issuedDate) {
		this.issuedDate = issuedDate;
	}

	/**
	 * @return the issuedPlace
	 */

	@Column(name = "ISSUED_PLACE", nullable = true, length = 85)
	public String getIssuedPlace() {
		return issuedPlace;
	}

	/**
	 * @param issuedPlace
	 *            the issuedPlace to set
	 */
	public void setIssuedPlace(String issuedPlace) {
		this.issuedPlace = issuedPlace;
	}

	/**
	 * @return the email
	 */
	@Column(name = "EMAIL", nullable = true, length = 21)
	public String getEmail() {
		return email;
	}

	/**
	 * @param email
	 *            the email to set
	 */
	public void setEmail(String email) {
		this.email = email;
	}

	@Column(name = "STATE", nullable = true)
	public String getState() {
		return state;
	}

	public void setState(String state) {
		this.state = state;
	}

}
